package br.com.sap.utils.erros;

import java.lang.reflect.Field;
import java.util.ArrayList;



import br.com.sap.utils.properties.LeitorProperties;


public class Erro {
	private ArrayList<Field> campos = new ArrayList<Field>();
	private String mensagem;
	private TipoErro erro;
	private TipoMensagemErro tipoMensagem;
	
	@Deprecated
	public Erro()
	{
		
	}
	
	public Erro(TipoErro tipo, String mensagem,TipoMensagemErro tipoMensagem)
	{
		this.erro = tipo;
		this.mensagem = mensagem;
		this.tipoMensagem = tipoMensagem;
	}
	
	public Erro(TipoErro tipo, String mensagem, ArrayList<Field> camposErrados, TipoMensagemErro tipoMensagem)
	{
		this.erro = tipo;
		this.mensagem = mensagem;
		this.campos = camposErrados;
		this.tipoMensagem = tipoMensagem;
	}
	
	public ArrayList<Field> getCampos() {
		return campos;
	}
	
	public String getNomeCampos(){
		String retorno = "";
		for (Field f:campos)
	
		{
			retorno +=  f.getName().substring(0, 1).toUpperCase() +
					f.getName().substring(1) + ", ";
		}
		if (!retorno.equals(""))
			retorno = retorno.substring(0, retorno.length() - 2);
		return retorno;
	}

	public void setCampos(ArrayList<Field> campos) {
		this.campos = campos;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public TipoErro getErro() {
		return erro;
	}

	public void setErro(TipoErro erro) {
		this.erro = erro;
	}

	public String getMensagemTraduzida(String NomePropertie)
	{
		LeitorProperties propertie = LeitorProperties.getPropertie(NomePropertie);
		String mensagem = propertie.getValor(this.mensagem);
		mensagem = mensagem.replaceAll("%%F", getNomeCampos());
		return mensagem;

	}

	public TipoMensagemErro getTipoMensagem() {
		return tipoMensagem;
	}

	public void setTipoMensagem(TipoMensagemErro tipoMensagem) {
		this.tipoMensagem = tipoMensagem;
	}
	
}